/************************
 * 描述：商品详情
 * 作者：Gibil
 * 时间：2013-12-13
************************/

//初始化幻灯片
var initCenteredSlider = function(_json, sliderContainerId){
	if (_json && _json.piclist.length > 0) {		
		var p = new Image(); //商品图片对象
		p.src = _json.piclist[0];
		Common.imgLoaded(p, function () {//图片加载完毕
			for (var i = 0; i < _json.piclist.length; i++) {
				$('#' + sliderContainerId + ' .swiper-wrapper').append('<div class="swiper-slide"><img src="' +  _json.piclist[i] + '" alt=""/></div>');
			}

			//初始化容器宽高
			$('#' + sliderContainerId).css({'height':(p.height > 250 ? 250 : p.height)});
			//创建幻灯片
			var mySwiper = new Swiper('.swiper-container',{
				autoplay: 3000,
				centeredSlides: true,
				slidesPerView: 'auto'
			})
		});
	} else {
		$('#' + sliderContainerId).hide();//没有幻灯片数据时隐藏幻灯片容器
	}
}

/************
* 商品详情
************/
var Product = {
    //收藏
    doLike: function (obj) {
        if (memberId.length < 1) {
            $.Prompt({ content: '亲，要登录才能收藏哦~', width: 160 });
            $.Prompt(); //传json格式参数时需要执行此方法
            return;
        }

        var $this = $(obj);
        var isLike = $this.hasClass('select'); //是否已收藏
        $.ajax({
            url: '/ajax/product.ashx',
            data: { 'act': 'praise', "comid":comid, 'pid': $this.attr('pid'), 'islike': (isLike ? 0 : 1) }, //注意islike参数取反
            success: function (msg) {
                if (msg == "1") {
                    if (isLike) {
                        $this.removeClass('select');
                        $('#bnavLike .ilike').removeClass('ilike_select');
                    }
                    else {
                        $this.addClass('select');
                        $('#bnavLike .ilike').addClass('ilike_select');
                    }

                } else if (msg == "-1") {
                    $.Prompt({ content: '亲，要登录才能收藏哦~', width: 160 });
                    $.Prompt(); //传json格式参数时需要执行此方法
                } else {
                    if (isLike) $.Prompt('取消收藏失败');
                    else $.Prompt('添加收藏失败');
                }
            }
        });
    },
    //购买数量控制
    numControl: function () {
        var $num = $("#buycount");
        var minNumber = parseInt($num.attr('minnum')); //最小购买数量
        var maxNumber = parseInt($num.attr('maxnum')); //最大购买数量
        if (!isNaN(minNumber) && minNumber > 1) {//大于1才表示自定义控制数量有效
            $num.val(minNumber);
            $('#minnumdesc').show();
        } else {
            minNumber = 1; //设置为1
            $('#minnumdesc').hide();
        }
        if (!isNaN(maxNumber) && maxNumber > 0) {//大于0表示控制最大购买数量
            $('#maxnumdesc').show();
        } else {
            maxNumber = 0; //设置为0
            $('#maxnumdesc').hide();
        }
        $num.keyup(function () {
            var number = parseInt($num.val());
            if (isNaN(number)) number = minNumber;
            if (number < minNumber) number = minNumber;
            if (maxNumber && number > maxNumber) number = maxNumber;//限制最大购买数量
            $num.val(number);
        })
        $("#plus").click(function () {
            var number = parseInt($num.val());
            number++;
            if (maxNumber && number > maxNumber) number = maxNumber; //限制最大购买数量
            $num.val(number);
        })
        $("#minus").click(function () {
            var number = parseInt($num.val());
            number--;
            if (number <= (minNumber - 1)) number = minNumber;
            $num.val(number);
        })
    },

    //初始化详情事件
    initDetailEvent: function () {
        //图文详情弹出框事件
        $("#btnDetail").click(function () {
            $("#mainContainer").hide();
            $("#detailContainer").show();

            if (!$(this).attr('init')) {//初始化详情图片
                $(this).attr('init', 1);
                $('#detailContainer img').each(function (i, n) {
                    var $img = $(n);
                    $img.attr('src', $img.attr('original'));
                });
            }
        });
        //图文详情弹出框返回事件
        $("#btnDetailBack").click(function () {
            $("#detailContainer").hide();
            $("#mainContainer").show();
        });
    },

	//详情图放大
	detailImgZoom: function(){
		var imgsSrc = [];
		function reviewImage(src) {
			if (typeof window.WeixinJSBridge != 'undefined') {
				WeixinJSBridge.invoke('imagePreview', {
					'current' : src,
					'urls' : imgsSrc
				});
			}
		}
		function onImgLoad() {
			var imgs = document.getElementById("detailContainer").getElementsByTagName('img');
			for( var i=0,l=imgs.length; i<l; i++ ){//忽略第一张图 是提前加载的loading图而已
				var img = imgs.item(i);
				var src = img.getAttribute('original') || img.getAttribute('src');
				if( src ){
					imgsSrc.push(src);
					(function(src){
						if (img.addEventListener){
							img.addEventListener('click', function(){
								reviewImage(src);
							});
						}else if(img.attachEvent){
							img.attachEvent('click', function(){
								reviewImage(src);
							});
						}
					})(src);
				}
			}
		}
		if( window.addEventListener ){
			window.addEventListener('load', onImgLoad, false);
		}else if(window.attachEvent){
			window.attachEvent('load', onImgLoad);
			window.attachEvent('onload', onImgLoad);
		}
	},

    //添加到购物车
    addToCart: function () {
        var buyNum = parseInt($('#buycount').val());
        var valids = "";
        //未完成规格的选择
        var isSelAllMsg = Sku.IsSelectAll();
        if (Sku._hasSpec && isSelAllMsg.length > 0) {
            $.Prompt(isSelAllMsg);
            return;
        }
        else {
            valids = Sku._SkuIdList;
        }

        if (buyNum > parseInt($('#buystock').text())) {
            $.Prompt('商品库存不足');
            return;
        }

        $.ajax({
            type: 'POST',
            url: '/ajax/product.ashx',
            dataType: 'json',
            data: { 'act': 'addtocart', 'pId': proId, 'Qty': buyNum, 'valids': valids },
            success: function (msg, textStatus) {
                switch (msg.res) {
                    case "0":
                        $.Prompt('页面参数有误');
                        break;
                    case "1":
                        $('#message-notice').show();
                        break;
                    case "2":
                        $.Prompt({ content: '商品已售完，不能购买', width: 150 });
                        $.Prompt(); //传json格式参数时需要执行此方法
                        break;
                    case "3":
                        $.Prompt({ content: '商品库存不足，不能购买', width: 150 });
                        $.Prompt();
                        break;
                    case "4":
                        $.Prompt({ content: '商品已下架，不能购买', width: 150 });
                        $.Prompt();
                        break;
                    case "5":
                        $.Prompt('商品SKU不存在');
                        break;
                    case "6":
                        $.Prompt('添加到购物车失败');
                        break;
                    case "7":
                        $.Prompt({ content: '商品不存在或已放入回收站，不能购买', width: 320 });
                        $.Prompt();
                        break;
                    default:
                        $.Prompt('添加到购物车失败');
                        break;
                }
            },
            error: function (textStatus) { }
        });
    },

    //去结算
    toCheckout: function () {
        var buyNum = parseInt($('#buycount').val());
        var valids = "";
        //未完成规格的选择
        var isSelAllMsg = Sku.IsSelectAll();
        if (Sku._hasSpec && isSelAllMsg.length > 0) {
            $.Prompt(isSelAllMsg);
            return;
        }
        else {
            valids = Sku._SkuIdList;
        }

        if (buyNum > parseInt($('#buystock').text())) {
            $.Prompt('商品库存不足');
            return;
        }

        $.ajax({
            type: 'POST',
            url: '/ajax/product.ashx',
            dataType: 'json',
            data: { 'act': 'addtocart', 'pId': proId, 'Qty': buyNum, 'valids': valids },
            success: function (msg, textStatus) {
                switch (msg.res) {
                    case "0":
                        $.Prompt('页面参数有误');
                        break;
                    case "1":
                        window.location = shopurl + "/cart.shtml?comid=" + msg.comid;
                        break;
                    case "2":
                        $.Prompt({ content: '商品已售完，不能购买', width: 150 });
                        $.Prompt(); //传json格式参数时需要执行此方法
                        break;
                    case "3":
                        $.Prompt({ content: '商品库存不足，不能购买', width: 150 });
                        $.Prompt();
                        break;
                    case "4":
                        $.Prompt({ content: '商品已下架，不能购买', width: 150 });
                        $.Prompt();
                        break;
                    case "5":
                        $.Prompt('商品SKU不存在');
                        break;
                    case "6":
                        $.Prompt('添加到购物车失败');
                        break;
                    case "7":
                        $.Prompt({ content: '商品不存在或已放入回收站，不能购买', width: 320 });
                        $.Prompt();
                        break;
                    default:
                        $.Prompt('添加到购物车失败');
                        break;
                }
            },
            error: function (textStatus) { }
        });
    }
}

/************
* SKU操作
************/
var Sku = {
    _SpecJson: null, //规格的Json
    _SkuJson: null, //Sku的Json
    _IsFinish: false, //是否选择完成
    _hasSpec: false, //是否有规格
    _SkuId: "", //选择完成后的SkuId
    _SkuIdList: "", //规格的ID组合

    //初始化
    Init: function (specJson, skuJson) {
        Sku._SpecJson = specJson;
        Sku._SkuJson = skuJson;
        if (typeof (Sku._SpecJson) != "undefined") {
            if (Sku._SpecJson.hasSpec == "1" && Sku._SpecJson.specList.length > 0) {
                Sku._hasSpec = true;
                //创建规格页面对象
                Sku.CreateHtml();
                //为页面中Sku相关对象绑定事件
                Sku.BindEvent();
            }
        }
    },

    //创建规格HTML
    CreateHtml: function () {
        var skuHtml = "";   //规格html字符串

        //遍历每种规格
        for (var i = 0; i < Sku._SpecJson.specList.length; i++) {
            var __spec = Sku._SpecJson.specList[i];
            skuHtml += '<dl specid="' + __spec.specId + '">';
            skuHtml += '    <dt>' + __spec.specName + '：</dt>';
            skuHtml += '    <dd>';
            skuHtml += '    <ul sid="' + __spec.specId + '">';

            for (var j = 0; j < __spec.specText.length; j++) {                
				var __sku = __spec.specText[j];
                var valText = __sku.ctmtext == "" ? __sku.valtext : __sku.ctmtext;
				if(Sku._SpecJson.specList.length == 1 || __sku.rltids.length > 0)//只有一个规格或者与其他规格有组合时才显示
					skuHtml += '<li vid="' + __sku.valueid + '" vtxt="' + valText + '">' + valText + '</li>';
            }

            skuHtml += '    </ul>';
            skuHtml += '    </dd>';
            skuHtml += '</dl>';
        }

        $("#speclist").html(skuHtml);
    },

    //为页面中Sku相关对象绑定事件
    BindEvent: function () {
        //规格绑定点击事件
        $("#speclist dl ul li").click(Sku.Click);
    },

    //选中规格值
    Click: function () {
        var $this = $(this);
        var $ul = $this.parent();
        if ($this.hasClass("select")) {//已经是选择值则移除
            $this.removeClass("select");
        } else {//选中
            $this.parent().find("li").not($this).removeClass("select");
            $this.addClass("select");

            var $spec = $("#speclist");
            if ($spec.find("dl dd ul").length == $spec.find("dl dd ul").has("li.select").length) {//全部选择则验证库存
                Sku.CheckStock();
            }
        }
        Sku.Disable($this);
    },

    //判断对象是否存在于数组中
    IsObjInArray: function (obj, arr) {
        var flag = false;
        try {
            for (var i = 0; i < arr.length; i++) {
                if (obj == arr[i]) {
                    flag = true; break;
                }
            }
        } catch (ex) {
            flag = false;
        }
        return flag;
    },

    //获取商品规格值的关联ID集合
    GetSpecValRltids: function (specid, valid) {
        var RltIdList = [];
        //查找该值的关联规格ID集合
        try {
            for (var i = 0; i < Sku._SpecJson.specList.length; i++) {
                if (Sku._SpecJson.specList[i].specId == specid) {
                    for (var j = 0; j < Sku._SpecJson.specList[i].specText.length; j++) {
                        if (Sku._SpecJson.specList[i].specText[j].valueid == valid) {
                            RltIdList = Sku._SpecJson.specList[i].specText[j].rltids;
                            break;
                        }
                    }
                    break;
                }
            }
        } catch (ex) {
            RltIdList = [];
        }
        return RltIdList;
    },

    //是否可选择
    Disable: function ($obj) {
        var $spec = $("#speclist");
        var $ul = $obj.parent();
        var specid = $ul.attr("sid");
        var valid = $obj.attr("vid");
		var isSel = $obj.hasClass("select");//点击规格是否选中
        var RltIdList = Sku.GetSpecValRltids(specid, valid);

        $spec.find("dl dd ul").not($ul).find("li").not(".select").each(function (i, n) {
			if (isSel && !Sku.IsObjInArray($(n).attr("vid"), RltIdList)) {//不在关联规格列表中
				$(n).removeClass("select").addClass("disable").unbind("click"); //令其不能选择
			} else {
				if ($(n).hasClass("disable")) {//点击规格取消选择和当前遍历规格已被禁止选择时需要判断令其恢复选择特性
					var EnbaleSel = true; //可以选择
					$spec.find("dl dd ul").not($ul).not($(n).parent()).find("li.select").each(function (j, m) {//循环其他选择值的关联ID集合
						var TmRlt = [];
						var Tsid = $(m).parent().attr("sid");
						TmRlt = Sku.GetSpecValRltids(Tsid, $(m).attr("vid"));
						if (!Sku.IsObjInArray($(n).attr("vid"), TmRlt)) {
							EnbaleSel = false; return false; //退出遍历
						}
					});
					if (EnbaleSel) {
						$(n).removeClass("disable").click(Sku.Click); //绑定点击事件
					}
				}
			}
		});
    },

    //获取选择的ID组合
    GetSelIdList: function () {
        var valids = ""; //ID组合
        var $spec = $("#speclist");
        $spec.find("dl dd ul li.select").each(function (i, n) {
            if (i > 0)
                valids += ",";
            valids += $(n).attr("vid");
        });
        return valids;
    },

    //检验库存
    CheckStock: function () {
        Sku._SkuIdList = Sku.GetSelIdList(); //ID组合
        //取出选择的SkuId
        for (var j = 0; j < Sku._SkuJson.skuList.length; j++) {
            if (Sku._SkuIdList == Sku._SkuJson.skuList[j].ids) {
                Sku._SkuId = Sku._SkuJson.skuList[j].skuid;
                break;
            }
        }

        //异步检验
        $.ajax({
            type: "POST",
            url: "/Ajax/Product.ashx",
            data: { "act": "stocks", "pid": Sku._SpecJson.pid, "skuid": Sku._SkuId },
            dataType: "json",
            cache: false,
            success: function (msg) {
                if (msg && msg.status == "1") {
                    $("#saleprice").text("￥" + msg.price);
                    $("#buystock").text(msg.stocks);
                    var $discount = $('#discount');
                    if ($discount.length > 0) {
                        if (msg.price < __mkprice) {
                            $discount.text('(' + Common.toDecimal((msg.price * 10 / __mkprice), 1) + '折)');
                            $discount.show();
                        } else {
                            $discount.hide();
                        }
                    }
                }
            }
        });
    },

    //验证是否全部选择了规格，空时表示已全部选择
    IsSelectAll: function () {
        var specErrorTxt = '';
        var $spec = $("#speclist");
        if ($spec != null && Sku._hasSpec) {//商品有规格时必须验证
            if ($spec.find("dl dd ul").length != $spec.find("dl dd ul").has("li.select").length) {//部分规格未选择
                $spec.find("dl dd ul").each(function (i, n) {
                    if ($(n).has("li.select").length == 0) {
                        if (specErrorTxt.length > 0) {
                            specErrorTxt += "、";
                        }
                        specErrorTxt += Sku._SpecJson.specList[i].specName;
                    }
                });
                specErrorTxt = "请选择" + specErrorTxt;
            }
        }
        return specErrorTxt;
    }
}

/************
* 评论
************/
var Comment = {
    scrollCount: 0, //触发获取数据的数次(+1等于页码)
    maxCount: 0, //可触发获取数据的总页数
    pageSize: 10, //每次触发取的记录条数
    isLoading: false, //列表是否加载中，避免重复触底加载

    //初始化评论事件
    initEvent: function () {
        //商品评论
        $("#btnCommend").click(function () {
            $("#mainContainer").hide();
            $("#commentContainer").show();

            if (!$(this).attr('init')) {//初始化评论列表
                $(this).attr('init', 1);
                Comment.getMore(); //获取列表

                //判断评论滚动事件并加载评论
                $(window).scroll(function () {
                    var $this = $(this);
                    var viewH = $this.height(); //可见高度
                    var contentH = $('#commentContainer').get(0).scrollHeight; //内容高度
                    var scrollTop = $this.scrollTop(); //滚动高度
                    if (contentH - viewH - scrollTop <= 55) { //到达底部55px时,加载新评论
                        Comment.getMore();
                    }
                });
            }
        });
        $('#btnComment').click(Comment.doComment); //评论
        //商品评论返回事件
        $("#btnCommendBack").click(function () {
            $("#commentContainer").hide();
            $("#mainContainer").show();
        });
    },

    //查看更多评论
    getMore: function () {
        if (Comment.scrollCount > 0 && Comment.scrollCount >= Comment.maxCount)
            return;
        Comment.scrollCount++;
        Comment.isLoading = true; //加载中...
        var dataJson = { "act": "commentlist", "proid": proId,"comid":comid, "currpage": Comment.scrollCount, "pagesize": Comment.pageSize };
       // var dataJson = { "act": "commentlist", "comid":comid, "proid": proId, "currpage": Comment.scrollCount, "pagesize": Comment.pageSize };
        $.ajax({
            type: 'POST',
            url: '/ajax/product.ashx',
            dataType: 'json',
            data: dataJson,
            success: function (msg, textStatus) {
                Comment.isLoading = false;
                Comment.maxCount = msg.iPageCount;
                if (msg.recordCount > 0) {
                    $('#commentContainer .cc_content_empty').hide();
                    for (var i = 0; i < msg.list.length; i++) {
                        if ($('#comment_' + msg.list[i].CommentID).length) return;
                        
                        var liHtml = '';
                        liHtml += '<li id="comment_' + msg.list[i].CommentID + '">';
                        liHtml += ' <div class="l">';
                        liHtml += '     <div class="title">';
                        liHtml += '         <a>' + msg.list[i].UserName + '</a><span>' + msg.list[i].DateFromNow + '</span>';
                        liHtml += '     </div>';
                        liHtml += '     <div class="des">';
                        liHtml += msg.list[i].Content;
                        liHtml += '     </div>';
                        liHtml += ' </div>';
                        liHtml += ' <div class="r"><a uname="' + msg.list[i].UserName + '" cid="' + msg.list[i].CommentID + '" onclick="Comment.reply(this);"></a></div>';
                        liHtml += ' <div class="clear"></div>';
                        liHtml += '</li>';
                        $('#commentContainer ul').append(liHtml);
                    }
                } else {
                    $('#commentContainer .cc_content_empty').show();
                }
            },
            error: function (textStatus) {
                Comment.isLoading = false;
            }
        });
    },

    //评论
    doComment: function () {
        if (!memberId) {
            $.Prompt({ content: '亲，要登录才能评论哦~', width: 160 });
            $.Prompt(); //传json格式参数时需要执行此方法
            return;
        }

        var $context = $('#txtComment');
        var content = $.trim($context.val());
        if (!content.length) {
            $.Prompt('请填写评论');
            return;
        }

        var dataJson = { "act": "comment", "proid": proId, "comid":comid, "content": content, "replyid": $context.attr('replyid') };
        $.ajax({
            type: 'POST',
            url: '/ajax/product.ashx',
            dataType: 'json',
            data: dataJson,
            success: function (msg, textStatus) {
                if (msg.result == "1") {
                    var liHtml = '';
                    liHtml += '<li>';
                    liHtml += '<div class="l">';
                    liHtml += ' <div class="title">';
                    liHtml += '     <a>' + msg.username + '</a><span>刚刚</span>';
                    liHtml += ' </div>';
                    liHtml += ' <div class="des">';
                    liHtml += content;
                    liHtml += ' </div>';
                    liHtml += '</div>';
                    liHtml += '<div class="r"><a uname="' + msg.username + '" cid="' + msg.commentid + '" onclick="Comment.reply(this);"></a></div>';
                    liHtml += '<div class="clear"></div>';
                    liHtml += '</li>';
                    $('#commentContainer ul').prepend(liHtml);
                    $('#commentContainer .cc_content_empty').hide();
                    $('#txtComment').removeAttr('replyid').val('').blur();
                    //评论加1
                    $('#commentNum').text(parseInt($('#commentNum').text()) + 1);
                } else if (msg.result == "-1") {
                    $.Prompt({ content: '亲，要登录才能评论哦~', width: 160 });
                    $.Prompt(); //传json格式参数时需要执行此方法
                } else {
                    $.Prompt('评论失败');
                }
            },
            error: function (textStatus) {
                $.Prompt('评论失败');
            }
        });
    },

    //回复
    reply: function (obj) {
        var $context = $('#txtComment');
        var $obj = $(obj);
        $context.attr('replyid', $obj.attr('cid')).val('@' + $obj.attr('uname') + '：').focus();
    }
}

$(function () {
    if (isLike) {//是否喜欢
        $('#btnLike').addClass('select');
        $('#bnavLike .ilike').addClass('ilike_select');
    }
    //底部导航的喜欢事件
    $('#bnavLike').click(function () {
        $('#btnLike').trigger('click');
    });
    //评论内容为空时，移除回复ID属性
    $('#txtComment').blur(function () {
        var $this = $(this);
        if ($.trim($this.val()).length == 0) {
            $this.removeAttr('replyid');
        }
    });

    Product.numControl();
    Product.initDetailEvent();
	Product.detailImgZoom();
    Comment.initEvent();
});